<?php
if (file_exists($ruta . $archivo)) {
    set_time_limit(0);
    ini_set('memory_limit', -1);
    $this->PhpExcel->Excel($ruta . $archivo);
    $objPHPExcel = $this->PhpExcel->leer->load($ruta . $archivo);
    $nhm = $objPHPExcel->getSheetCount() - 1;
    $datafinal = array();
    $errores = array();
    $precios_omitidos = array();
    for ($nh = 0; $nh < $nhm; $nh++) {
        $objPHPExcel->setActiveSheetIndex($nh);
        $objWorksheet = $objPHPExcel->getActiveSheet();
        $ultimaFila = $objWorksheet->getHighestRow();
        $ultimaColumna = $objWorksheet->getHighestColumn();
        $ultimaColumnaIndice = PHPExcel_Cell::columnIndexFromString($ultimaColumna);
        $error_formato = 0;
        $datos = array();
        $recorrido = array();
        for ($col = 0; $col < $ultimaColumnaIndice; ++$col) {
            if ($error_formato)
                break;
            $paso = 0;
            for ($fila = 1; $fila <= $ultimaFila; ++$fila) {
                $codCliente = $objWorksheet->getCellByColumnAndRow($col, 2)->getValue();
                $clientes = array();
                if (!in_array(strtolower($codCliente), array('codigo', 'programa'))) {
                    $in_v = $nh - 1;
                    if ($fila == 1) {
                        $datos[$fila][$col]['cliente'] = $objWorksheet->getCellByColumnAndRow($col, 1)->getValue();
                        $datos[$fila][$col]['lapzo'] = $objWorksheet->getCellByColumnAndRow($col, 2)->getValue();
                    } else {
                        $datos[$fila][$col]['cliente'] = $datos[1][$col]['cliente'];
                        $datos[$fila][$col]['lapzo'] = $datos[1][$col]['lapzo'];
                    }
                    if ($nh > 0 && $paso == 0) {
                        $paso = 1;
                        if (isset($datafinal[$in_v . "3"][$col - 1]['cliente']) && isset($datafinal[$in_v . "3"][$col - 1]['lapzo'])) {
                            if ($datafinal[$in_v . "3"][$col - 1]['cliente'] == $datos[1][$col]['cliente'] && $datafinal[$in_v . "3"][$col - 1]['lapzo'] == $datos[1][$col]['lapzo']) {
                                $bien = 1;
                            }
                            else
                                $bien = 0;
                        }
                        else {
                            $bien = 1;
                        }
                    }
                    else
                        $bien = 1;

                    if ($bien == 1) {
                        $datos[$fila][$col]['programa'] = $objWorksheet->getCellByColumnAndRow($ultimaColumnaIndice - 1, $fila)->getValue();
                        $datos[$fila][$col]['codigo'] = $objWorksheet->getCellByColumnAndRow(0, $fila)->getCalculatedValue();
                        $datos[$fila][$col]['precio'] = $objWorksheet->getCellByColumnAndRow($col, $fila)->getCalculatedValue();
                        $nro_fila = $objWorksheet->getCellByColumnAndRow($col, $fila)->getRow();
                        $letra_columna = $objWorksheet->getCellByColumnAndRow($col, $fila)->getColumn();
                        $datos[$fila][$col]['codigo'] = trim($datos[$fila][$col]['codigo']);
                        if (is_numeric($datos[$fila][$col]['codigo'])) {
                            $omitir = 1;
                            if (strlen($datos[$fila][$col]['codigo']) != 18 || empty($datos[$fila][$col]['codigo'])) {
                                $datos[$fila][$col]['codigo'] = "<font color=\"red\"><b>" . $datos[$fila][$col]['codigo'] . "</b></font>";
                                $omitir = 0;
                            }
                            if (empty($datos[$fila][$col]['cliente']) || $datos[$fila][$col]['cliente'] == '') {
                                $omitir = 0;
                            }
                            if (!($datos[$fila][$col]['lapzo'] >= 0)) {
                                $omitir = 0;
                            }
                            if (empty($datos[$fila][$col]['programa']) || $datos[$fila][$col]['programa'] == '') {
                                $omitir = 0;
                            }
                            if (!empty($datos[$fila][$col]['precio']) &&
                                    ($datos[$fila][$col]['precio'] < 0.1 || !is_numeric($datos[$fila][$col]['precio'])
                                    )) {
                                $omitir = 0;
                            }
                            $err_msg = '';
                            $err_msg .= (empty($datos[$fila][$col]['codigo']) || strlen($datos[$fila][$col]['codigo']) != 18 ) ? 'Codigo Invalido, ' : '';
                            // $err_msg .= (in_array($datos[$fila][$col]['codigo'], $clientes)) ? 'Duplicado, ' : '';
                            $err_msg .= ($datos[$fila][$col]['lapzo'] >= 0) ? '' : 'Lapzo Invalido, ';
                            $err_msg .= (empty($datos[$fila][$col]['precio']) || $datos[$fila][$col]['precio'] == '') ? 'Precio Invalido, ' : '';
                            $err_msg .= (!empty($datos[$fila][$col]['precio']) && ($datos[$fila][$col]['precio'] < 0.1 || !is_numeric($datos[$fila][$col]['precio']))) ? 'Precio Invalido, ' : '';
                            $err_msg .= (empty($datos[$fila][$col]['cliente']) || $datos[$fila][$col]['cliente'] == '') ? 'Cliente Invalido, ' : '';
                            $err_msg .= (empty($datos[$fila][$col]['programa']) || $datos[$fila][$col]['programa'] == '') ? 'Programa Invalido, ' : '';
                            if ($err_msg == '')
                                $err_msg = 1;
                            $clientes[] = $datos[$fila][$col]['codigo'];

                            $datafinal[$nh . $fila][] = array('error_msg' => $err_msg,
                                'cliente' => $datos[$fila][$col]['cliente'],
                                'lapzo' => $datos[$fila][$col]['lapzo'],
                                'precio' => $datos[$fila][$col]['precio'],
                                'codigo' => $datos[$fila][$col]['codigo'],
                                'programa' => $datos[$fila][$col]['programa'],
                                'scvlines' => $fila/* ,
                                      'data' => $dataPorColumna */);
                            if ($err_msg != 1 && $nro_fila > 2) {
                                if ($omitir) {
                                    $precios_omitidos[] = array('error_msg' => $err_msg,
                                        'cliente' => $datos[$fila][$col]['cliente'],
                                        'lapzo' => $datos[$fila][$col]['lapzo'],
                                        'precio' => $datos[$fila][$col]['precio'],
                                        'codigo' => $datos[$fila][$col]['codigo'],
                                        'programa' => $datos[$fila][$col]['programa'],
                                        'Celda' => $letra_columna . $nro_fila,
                                        'Hoja' => $nh + 1,
                                        'scvlines' => $fila);
                                } else {
                                    $errores[] = array('error_msg' => $err_msg,
                                        'cliente' => $datos[$fila][$col]['cliente'],
                                        'lapzo' => $datos[$fila][$col]['lapzo'],
                                        'precio' => $datos[$fila][$col]['precio'],
                                        'codigo' => $datos[$fila][$col]['codigo'],
                                        'programa' => $datos[$fila][$col]['programa'],
                                        'Celda' => $letra_columna . $nro_fila,
                                        'Hoja' => $nh + 1,
                                        'scvlines' => $fila);
                                }
                            }
                        } else {
                            if ($nro_fila > 2) {
                                $datos[$fila][$col]['codigo'] = "<font color=\"red\"><b>" . $datos[$fila][$col]['codigo'] . "</b></font>";
                                $omitir = 0;
                                $err_msg = '';
                                $err_msg .= (!is_numeric($datos[$fila][$col]['codigo']) ) ? 'Codigo Invalido, ' : '';
                                $err_msg .= (in_array($datos[$fila][$col]['codigo'], $clientes)) ? 'Duplicado, ' : '';
                                $err_msg .= ($datos[$fila][$col]['lapzo'] >= 0) ? '' : 'Lapzo Invalido, ';
                                $err_msg .= (empty($datos[$fila][$col]['precio']) || $datos[$fila][$col]['precio'] == '') ? 'Precio Invalido, ' : '';
                                $err_msg .= (empty($datos[$fila][$col]['cliente']) || $datos[$fila][$col]['cliente'] == '') ? 'Cliente Invalido, ' : '';
                                $err_msg .= (empty($datos[$fila][$col]['programa']) || $datos[$fila][$col]['programa'] == '') ? 'Programa Invalido, ' : '';
                                $errores[] = array('error_msg' => $err_msg,
                                    'cliente' => $datos[$fila][$col]['cliente'],
                                    'lapzo' => $datos[$fila][$col]['lapzo'],
                                    'precio' => $datos[$fila][$col]['precio'],
                                    'codigo' => $datos[$fila][$col]['codigo'],
                                    'programa' => $datos[$fila][$col]['programa'],
                                    'Celda' => $letra_columna . $nro_fila,
                                    'Hoja' => $nh + 1,
                                    'scvlines' => $fila);
                            }
                        }
                    } else {
                        $error_formato = 1;
                        break;
                    }
                }
            }
        }
    }
    if ($error_formato) {
        $datafinal = null;
        $this->Vista->mensaje('Error en el formato del archivo', 'ALERTA');
    }
    $no = $this->Interfaz->img('iconos/icons/cross.gif', 'Dato Erroneo', 'Dato Erroneo', 15, 15);
    $compactada = serialize($datafinal);
    $final = urlencode($compactada);
    $titulos = array();
    $lapzo = array();
    $titulos[] = 'Codigo';

    if (isset($datafinal["03"]))
        foreach ($datafinal["03"] as $valor) {
            if ($valor['cliente'] != '' and $valor['lapzo'] >= 0)
                $titulos[] = $valor['cliente'] . ' ' . $valor['lapzo'];
            else
                $titulos[] = '';
            $lapzo[] = $valor['lapzo'];
        }
    $titulos[] = 'Programa';
    echo $this->Interfaz->filset('Precios a Cargar', 0, 0, 'gray', 0);
    ?>
    <br />
    <table border='0' cellpadding='0' cellspacing='0' width='98%' align='center' style="border:5;">
        <tr>
            <td class="labeln" valign='top'>
                <div id="photolayesss" style="z-index: 1; width: 800px;height: 188px;   border-width:1px; border-style:solid; border-color:#ff9900;">
                    <?php
                    $codigos_finales_array = array();
                    $codigos_finales = '(';
                    $conta = 0;
                    $this->Vista->paginador_inicio();
                    foreach ($datafinal as $valor) {
                        $v3 = null;
                        $v3 = array();
                        if (!in_array($valor[0]['codigo'], $codigos_finales_array)) {
                            $codigos_finales_array[] = $valor[0]['codigo'];
                            $codigos_finales.= "'" . $valor[0]['codigo'] . "',";
                        }

                        if (!empty($valor[0]['codigo']))
                            $v3[] = array($valor[0]['codigo']);
                        else
                            $v3[] = array($no, 0);

                        foreach ($valor as $linea) {
                            if (!empty($linea['precio']))
                                $v3[] = array($this->Interfaz->miles($linea['precio']));
                            else
                                $v3[] = array($no, 0);
                        }
                        $v3[] = array($valor[0]['programa']);
                        $this->Vista->paginador_td($busq, $v3);
                        $conta++;
                    }
                    $codigos_finales = substr($codigos_finales, 0, -1) . ')';
                    $v2 = array();
                    $con = 0;
                    foreach ($titulos as $valor) {
                        //if($valor != ''){ $ta=($con==0) ? 100 : 70; $v2[]=array($valor,$ta,'c');}
                        //else $v2[]=array($no,70,'c');
                        if ($con == 0)
                            $v2[] = array($valor, 120, 'c');
                        else if (($con + 1) == count($titulos))
                            $v2[] = array($valor, 'auto', 'c');
                        else
                            $v2[] = array($valor, 80, 'r');

                        $con++;
                    }
                    $this->Vista->paginador_fin(5, $v2, 1, 1, 'PRECIOS');
                    ?>
                </div> 
            </td>
        </tr>
        <tr>
            <td>
                <table border='0' width='100%'><tr>
                        <td valign='top' width='450px'>
                            <div id="alertas" >
                                <font style="font-size:11px;">
                                <p><?php echo "Si el cliente o el plazo contienen la imagen $no, no se procesar&aacute; la columna completa"; ?></p>
                                <p><?php echo "Si el c&oacute;digo esta de color <b><font color='red'>Rojo</font></b> no se procesar&aacute; la fila completa"; ?></p>
                                <p><?php echo "Si el precio contienen la imagen $no, no se procesar&aacute; ese Precio"; ?></p>

                                </font>
                            </div>
                        </td>
                        <td align='right'>
                            <font style="font-size:11px;">
                            <?php
                            if (count($errores) > 0 || count($omitir) > 0) {
                               $_SESSION['errores_precios'] = $errores;
                               $_SESSION['precios_omitidos'] = $precios_omitidos;
                                echo "<font color='red'><b> Se encontraron " . count($errores) . " errores en el Archivo </b></font> ";
                                echo $this->Interfaz->boton('Ver Detalles Errores', 'ListaPrecios/ver_detalles_error/1', 'ver_detalles_error');
                                echo "<br/><font color='red'><b> Se Omitiran " . count($precios_omitidos) . " Precios del Archivo </b></font> ";
                                echo $this->Interfaz->boton('Ver Detalles Precios', 'ListaPrecios/ver_detalles_error/2', 'ver_detalles_error');
                            } else {
                                unset($_SESSION['errores_precios']);
                                unset($_SESSION['precios_omitidos']);
                            }
                            ?>

                        </td>
                    </tr>
                    <tr><td colspan='2' align='center'>
                            <?php
                            if (!$error_formato) {
                                echo $this->Interfaz->inputoculto('opciones', $opciones);
                                echo $this->Interfaz->inputoculto('datos', $final);
                                echo $this->Interfaz->inputoculto('codigos_finales', $codigos_finales);
                                $compactada = serialize($codigos_finales_array);
                                $final = urlencode($compactada);
                                echo $this->Interfaz->inputoculto('codigos_finales_array', $final);
                                if (count($errores) == 0 && count($datafinal) > 0) {
                                    ?>
                                    <input type='button' id='abuttonarchivo' value='PROCESAR' style="cursor:pointer;height:23px; width: 135px;" class="x-btn-default-small x-noicon x-btn-noicon x-btn-default-small-noicon x-btn-center" Onclick="EnviaFormulario('<?php echo DLOAD; ?>', 'ListaPrecios/guardar_lista_precio', '<?php echo $id_formulario; ?>', 'guardando');"/>
                                    <?php
                                }
                            }
                            ?>
                        </td></tr></table>
            </td>
        </tr>
    </table>

    <br />
    <?php echo $this->Interfaz->filset(); ?>
    </div>
    <div id='ver_detalles_error'></div>
    <?php
} else {
    echo $this->Interfaz->filset('Precios a Cargar', 0, 0, 'gray', 0);
    ?>
    <br />
    <table border='0' cellpadding='15' cellspacing='15' width='98%' align='center' style="border:5;">
        <tr>
            <td class="labeln" valign='top'>
                <div id="photolayesss" style="z-index: 1; width: 770px;height: 168px;   border-width:1px; border-style:solid; border-color:#ff9900;">
    <?php echo "Archivo no existe"; ?></div> <br />
            </td>
        </tr>
    </table>
    <br />
    <?
    echo $this->Interfaz->filset();
}
?>